package com.ruoyi.platform.service;

import java.util.List;
import java.util.Map;
import com.ruoyi.platform.domain.DishAudit;

/**
 * 商家菜品上架审核Service接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface IDishAuditService 
{
    /**
     * 查询商家菜品上架审核
     * 
     * @param auditId 商家菜品上架审核主键
     * @return 商家菜品上架审核
     */
    public DishAudit selectDishAuditByAuditId(Long auditId);

    /**
     * 查询商家菜品上架审核列表
     * 
     * @param dishAudit 商家菜品上架审核
     * @return 商家菜品上架审核集合
     */
    public List<DishAudit> selectDishAuditList(DishAudit dishAudit);

    /**
     * 新增商家菜品上架审核
     * 
     * @param dishAudit 商家菜品上架审核
     * @return 结果
     */
    public int insertDishAudit(DishAudit dishAudit);

    /**
     * 修改商家菜品上架审核
     * 
     * @param dishAudit 商家菜品上架审核
     * @return 结果
     */
    public int updateDishAudit(DishAudit dishAudit);

    /**
     * 批量删除商家菜品上架审核
     * 
     * @param auditIds 需要删除的商家菜品上架审核主键集合
     * @return 结果
     */
    public int deleteDishAuditByAuditIds(Long[] auditIds);

    /**
     * 删除商家菜品上架审核信息
     * 
     * @param auditId 商家菜品上架审核主键
     * @return 结果
     */
    public int deleteDishAuditByAuditId(Long auditId);

    /**
     * 审核通过
     * 
     * @param auditId 审核ID
     * @param auditorId 审核人ID
     * @param auditorName 审核人姓名
     * @param auditRemark 审核备注
     * @return 结果
     */
    public int approveDish(Long auditId, Long auditorId, String auditorName, String auditRemark);

    /**
     * 审核拒绝
     * 
     * @param auditId 审核ID
     * @param auditorId 审核人ID
     * @param auditorName 审核人姓名
     * @param rejectReason 拒绝原因
     * @return 结果
     */
    public int rejectDish(Long auditId, Long auditorId, String auditorName, String rejectReason);

    /**
     * 根据商家ID查询待审核菜品列表
     * 
     * @param merchantId 商家ID
     * @return 菜品审核列表
     */
    public List<DishAudit> selectPendingDishByMerchantId(Long merchantId);

    /**
     * 获取审核统计数据
     * 
     * @return 统计数据
     */
    public Map<String, Object> getAuditStatistics();

    /**
     * 批量审核通过
     * 
     * @param auditIds 审核ID数组
     * @param auditorId 审核人ID
     * @param auditorName 审核人姓名
     * @param auditRemark 审核备注
     * @return 结果
     */
    public int batchApproveDish(Long[] auditIds, Long auditorId, String auditorName, String auditRemark);

    /**
     * 批量审核拒绝
     * 
     * @param auditIds 审核ID数组
     * @param auditorId 审核人ID
     * @param auditorName 审核人姓名
     * @param rejectReason 拒绝原因
     * @return 结果
     */
    public int batchRejectDish(Long[] auditIds, Long auditorId, String auditorName, String rejectReason);
}